public class Test {

//    给你一个整数数组 arr，请你判断数组中是否存在连续三个元素都是奇数的情况：如果存在，请返回 true ；否则，返回 false
    public static boolean threeOddNumber(int[] array){
        for (int i = 0; i < array.length - 3; i++) {
            if((array[i] & 1) != 0 && (array[i+1] & 1) != 0 && (array[i+2] & 1) != 0){
                return true;
            }
        }
        return false;
    }

    public static void main(String[] args) {
        int[] array = {1,2,34,3,4,5,7,23,12};
        boolean flag = threeOddNumber(array);
        System.out.println(flag);
    }
//    给定一个大小为 n 的数组，找到其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。
    public static int func1(int[] array){
        int  candidate = array[0];
        int count = 1;
        for (int i = 1; i < array.length; i++) {
            if(array[i] == candidate){
                count++;
            }else if(count == 0){
                candidate = array[i];
                count = 1;
            }else{
                count--;
            }
        }
        return candidate;
    }

    public static void main2(String[] args) {
        int[] array = {2,2,1,1,1,2,2};
        int ret = func1(array);
        int count = 0;
        for (int x : array) {
            if(x == ret){
                count++;
            }
        }
        if(count > array.length / 2){
            System.out.println(ret);
        }else{
            System.out.println("该数组没有多数元素");
        }
    }
//        给定一个非空整数数组，除了某个元素只出现一次以外，其余每个元素均出现两次。找出那个只出现了一次的元素。
    public static void func(int[] array){
        int ret = 0;
        for (int i = 0; i < array.length; i++) {
            ret ^= array[i];
        }
        System.out.println(ret);
    }
    public static void main1(String[] args) {
        int[] array = {4,1,2,1,2};
        func(array);
    }

}
